﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
using System.Web;

namespace Kooboo.CMS.SiteConverter.Models
{
    public class HttpFileCollectionCustomizable : HttpFileCollectionBase
    {
        public HttpFileCollectionCustomizable() { }

        public HttpFileCollectionCustomizable(HttpFileCollectionBase files)
        {
            foreach (var key in files.AllKeys)
            {
                this.AddFile(key, files[key]);
            }
        }

        public void AddFile(string key, HttpPostedFileBase file)
        {
            base.BaseAdd(key, file);
        }

        public override void CopyTo(Array dest, int index)
        {
            int count = this.Count;
            var _all = new HttpPostedFileBase[count];
            for (int i = 0; i < count; i++)
            {
                _all[i] = this.Get(i);
            }
            _all.CopyTo(dest, index);
        }

        public override HttpPostedFileBase Get(int index)
        {
            return (HttpPostedFileBase)base.BaseGet(index);
        }

        public override HttpPostedFileBase Get(string name)
        {
            return (HttpPostedFileBase)base.BaseGet(name);
        }

        public override string GetKey(int index)
        {
            return base.BaseGetKey(index);
        }

        public override string[] AllKeys
        {
            get
            {
                return base.BaseGetAllKeys();
            }
        }

        public override  HttpPostedFileBase this[string name]
        {
            get
            {
                return this.Get(name);
            }
        }

        public override HttpPostedFileBase this[int index]
        {
            get
            {
                return this.Get(index);
            }
        }

        public void Remove(string key)
        {
            base.BaseRemove(key);
        }

        public override int Count
        {
            get
            {
                return this.AllKeys.Count();
            }
        }
    }
}

